home *** CD-ROM | disk | FTP | other *** search
/ Mission 3 / Mission 3.zip / Mission 3.iso / zugabe / va45 / visual45 / library / extend / clipbrd.s next >
Text File  |  1998-08-22  |  7KB  |  280 lines

  1.  ifnd LIB_LOAD_FILE_IN_MEM
  2.   fail    ; LIB_GEM_CLIPBOARD : nécessite la librairie LIB_LOAD_FILE_IN_MEM
  3.   end
  4.   ifnd LIB_GET_FLENGTH
  5.    fail    ; LIB_LOAD_FILE_IN_MEM : nécessite librairie LIB_GET_FLENGTH
  6.    end
  7.   endc
  8.  else
  9.   ifnd LIB_GET_FLENGTH
  10.    fail    ; LIB_LOAD_FILE_IN_MEM : nécessite librairie LIB_GET_FLENGTH
  11.    end
  12.   endc
  13.  endc
  14.  
  15. ;------------------------------------------------------------------------------
  16. ; Method name : -
  17. ; Asm label   : GWVA_CLIPB_SEARCH_CLIPBOARD
  18. ; Description : Recherche du chemin du clipboard GEM
  19. ;
  20. ; Rq  : Si le clipboard n'existe pas, on le cree sur le lecteur de boot
  21. ;
  22. ; out : GWVA_CLIPB_PATHNAME = contient le path du clipboard
  23. ; out : a1.l = pointeur sur le premier 0.b après le chemin du clipboard
  24. ; out : d7.w = GWVA_NO_ERROR_GENERIC ou GWVA_ERROR_GENERIC si erreur
  25. ;
  26. ; 19/03/98 : Création
  27. ;------------------------------------------------------------------------------
  28. GWVA_CLIPB_SEARCH_CLIPBOARD:
  29.  
  30. ; On doit utiliser un sémaphore sous Mint>=0.92 (recherche cookie)
  31.  
  32.     scrp_read #GWVA_CLIPB_PATHNAME
  33.  
  34.     tst.w d0
  35.     bne.s .chemin_clipboard_defini
  36.  
  37. .pas_de_clipboard_defini:
  38.     lea GWVA_CLIPB_PATHNAME,a0
  39.     move.b GWVA_ROOT_SYSVAR_BOOT_DEVICE+1,(a0)
  40.     add.b #'A',(a0)+
  41.     move.w #':\',(a0)+
  42.     move.l #'CLIP',(a0)+
  43.     move.l #'BRD'*256,(a0)
  44.  
  45.     save.l a0
  46.     DCREATE GWVA_CLIPB_PATHNAME
  47.     load.l a0
  48.  
  49.     cmp.w #-34,d0    ; path not found
  50.     beq .pas_creation_clipboard
  51. .clipboard_cree:
  52.     
  53.     move.l #'BRD\',(a0)+
  54.     clr.b (a0)
  55.  
  56.     scrp_write #GWVA_CLIPB_PATHNAME
  57. .chemin_clipboard_defini:
  58.  
  59.     lea GWVA_CLIPB_PATHNAME,a0
  60.     STOP_ON_0 a0
  61.     lea 1(a0),a0
  62.  
  63. .pas_bon_format_de_chemin:
  64.     lea -1(a0),a0
  65.     cmp.l #GWVA_CLIPB_PATHNAME,a0
  66.     beq.s .pas_de_clipboard_defini
  67.     cmp.b #'\',-1(a0)
  68.     bne.s .pas_bon_format_de_chemin
  69.  
  70.     move.l a0,a1
  71.     move.w #GWVA_NO_ERROR_GENERIC,d7
  72.     rts
  73. .pas_creation_clipboard:
  74.     move.w #GWVA_ERROR_GENERIC,d7
  75.     rts
  76.  
  77. ;------------------------------------------------------------------------------
  78. ; Method name : -
  79. ; Asm label   : GWVA_CLIPB_CLEAR_CLIPBOARD
  80. ; Description : Vide le clipboard GEM
  81. ;
  82. ; Rq  : Si le clipboard n'existe pas, on le cree sur le lecteur de boot
  83. ;
  84. ; out : GWVA_CLIPB_PATHNAME = contient le path du clipboard
  85. ; out : a1.l = pointeur sur le premier 0.b après le chemin du clipboard
  86. ; out : d7.w = GWVA_NO_ERROR_GENERIC ou GWVA_ERROR_GENERIC si erreur
  87. ;
  88. ; 19/03/98 : Création
  89. ;------------------------------------------------------------------------------
  90. GWVA_CLIPB_CLEAR_CLIPBOARD:
  91.  
  92.     bsr GWVA_CLIPB_SEARCH_CLIPBOARD
  93.     cmp.w #GWVA_NO_ERROR_GENERIC,d7
  94.     bne.s .erreur_de_clipboard
  95.  
  96.     move.l a1,a0
  97.     move.l #'SCRA',(a1)+
  98.     move.l #'P.*'*256,(a1)        ; nom générique des fichiers du clipboard
  99.  
  100.     save.l a0
  101.     FGETDTA        ; d0.l = adresse ancien DTA
  102.     save.l d0
  103.     FSETDTA GWVA_ROOT_DTA
  104.     load.l d0
  105.     load.l a0
  106.  
  107.     save.l d0
  108.     save.l a0
  109.     FSFIRST #FA_ARCHIVE,GWVA_CLIPB_PATHNAME
  110.  
  111. .effacer_tous_les_fichier_scrap:
  112.     tst.w d0
  113.     bmi.s .pas_de_fichier_scrap_trouve
  114.     move.l (sp),a0
  115.     lea GWVA_ROOT_DTA+d_fname,a1
  116.     COPY_STRING_0 a1,a0
  117.     FDELETE GWVA_CLIPB_PATHNAME
  118.     FSNEXT
  119.     bra.s .effacer_tous_les_fichier_scrap
  120. .pas_de_fichier_scrap_trouve:
  121.     load.l a1
  122.     load.l a0
  123.  
  124.     save.l a1
  125.     FSETDTA (a0)
  126.     load.l a1
  127.  
  128.     move.w #GWVA_NO_ERROR_GENERIC,d7
  129. .erreur_de_clipboard:
  130.     rts
  131.  
  132. ;------------------------------------------------------------------------------
  133. ; Method name : -
  134. ; Asm label   : GWVA_CLIPB_COPY
  135. ; Description : Copie un buffer dans le clipboad GEM
  136. ;
  137. ; Rq  : Si le clipboard n'existe pas, on le cree sur le lecteur de boot
  138. ;
  139. ; in  : a0.l = pointeur sur le buffer à écrire dans le clipboard
  140. ; in  : d0.l = longueur du buffer à écrire
  141. ; in  : d1.l = extention du fichier justifiée à gauche : "TXT"*256
  142. ; out : GWVA_CLIPB_PATHNAME = contient le path du clipboard
  143. ; out : d7.w = GWVA_NO_ERROR_GENERIC ou erreur
  144. ;              GWVA_ERROR_GENERIC
  145. ;       ou erreur de création/écriture de fichier
  146. ;
  147. ; 19/03/98 : Création
  148. ;------------------------------------------------------------------------------
  149. GWVA_CLIPB_COPY:
  150.  
  151.     save.l d0-d1/a0
  152.     bsr GWVA_CLIPB_SEARCH_CLIPBOARD
  153.     load.l d0-d1/a0
  154.     cmp.w #GWVA_NO_ERROR_GENERIC,d7
  155.     bne.s .erreur_de_clipboard
  156.  
  157.     move.l #'SCRA',(a1)+
  158.     move.w #'P.',(a1)+
  159.     move.l d1,(a1)
  160.  
  161.     save.l d0/a0
  162.     FILE_OPEN write,GWVA_CLIPB_PATHNAME,d7
  163.     load.l d0/a0
  164.     tst.w d7
  165.     bmi.s .pas_creation_fichier_scrap
  166.  
  167.     save.l d0/d7
  168.     FWRITE a0,d0,d7
  169.     load.l d1/d7
  170.     save.l d0
  171.     FCLOSE d7
  172.     load.l d0
  173.     tst.l d0
  174.     bmi.s .erreur_ecriture
  175.     cmp.l d0,d1
  176.     bne.s .erreur_ecriture
  177.     move.w #GWVA_NO_ERROR_GENERIC,d7
  178. .pas_creation_fichier_scrap:
  179. .erreur_de_clipboard:
  180.     rts
  181. .erreur_ecriture:
  182.     move.w #GWVA_ERROR_GENERIC,d7
  183.     rts
  184.  
  185. ;------------------------------------------------------------------------------
  186. ; Method name : -
  187. ; Asm label   : GWVA_CLIPB_PASTE
  188. ; Description : Lecture d'un fichier du clipboard GEM
  189. ;
  190. ; Rq  : Si le clipboard n'existe pas, on le cree sur le lecteur de boot
  191. ;
  192. ; in  : a0.l = pointeur sur le buffer où ecrire les données lues du clipboard
  193. ; in  : d0.l = longueur du buffer à lire
  194. ; in  : d1.l = extention du fichier justifiée à gauche : "TXT"*256
  195. ; out : GWVA_CLIPB_PATHNAME = contient le path du clipboard
  196. ; out : d0.l = longueur réellement lue
  197. ; out : d7.w = GWVA_NO_ERROR_GENERIC ou erreur
  198. ;              GWVA_ERROR_GENERIC
  199. ;       ou erreur de lecture de fichier
  200. ;
  201. ; 19/03/98 : Création
  202. ;------------------------------------------------------------------------------
  203. GWVA_CLIPB_PASTE:
  204.  
  205.     save.l d0-d1/a0
  206.     bsr GWVA_CLIPB_SEARCH_CLIPBOARD
  207.     load.l d0-d1/a0
  208.     cmp.w #GWVA_NO_ERROR_GENERIC,d7
  209.     bne.s .erreur_de_clipboard
  210.  
  211.     move.l #'SCRA',(a1)+
  212.     move.w #'P.',(a1)+
  213.     move.l d1,(a1)
  214.  
  215.     save.l d0/a0
  216.     FILE_OPEN read,GWVA_CLIPB_PATHNAME,d7
  217.     load.l d0/a0
  218.     tst.w d7
  219.     bmi.s .erreur_de_lecture_fichier_scrap
  220.  
  221.     FREAD a0,d0,d7
  222.  
  223.     save.l d0
  224.     FCLOSE d7
  225.     load.l d0
  226.  
  227.     tst.l d0
  228.     bmi.s .erreur_lecture
  229.  
  230.     move.w #GWVA_NO_ERROR_GENERIC,d7
  231. .erreur_de_lecture_fichier_scrap:
  232. .erreur_de_clipboard:
  233.     rts
  234. .erreur_lecture:
  235.     move.w #GWVA_ERROR_GENERIC,d7
  236.     rts
  237.  
  238. ;------------------------------------------------------------------------------
  239. ; Method name : -
  240. ; Asm label   : GWVA_CLIPB_PASTE_IN_MEM
  241. ; Description : Lecture d'un fichier du clipboard GEM en memoire, avec 
  242. ;               réservation automatique du buffer par un MXALLOC
  243. ;
  244. ; Rq  : Si le clipboard n'existe pas, on le cree sur le lecteur de boot
  245. ; Rq  : A l'utilisateur de la fonction de rendre la mémoire  du MXALLOC
  246. ;
  247. ; in  : d0.l = extention du fichier justifié à gauche : "TXT"*256
  248. ; in  : d1.w = mxalloc-mode
  249. ; out : GWVA_CLIPB_PATHNAME = contient le path du clipboard
  250. ; out : a0.l = pointeur sur le buffer
  251. ; out : d0.l = longueur réellement lue
  252. ; out : d7.w = GWVA_NO_ERROR_GENERIC ou erreur
  253. ;              GWVA_ERROR_GENERIC
  254. ;       ou erreur de lecture de fichier
  255. ;
  256. ; 19/03/98 : Création
  257. ;------------------------------------------------------------------------------
  258. GWVA_CLIPB_PASTE_IN_MEM:    
  259.  
  260.     save.l d0-d1
  261.     bsr GWVA_CLIPB_SEARCH_CLIPBOARD
  262.     load.l d0-d1
  263.     cmp.w #GWVA_NO_ERROR_GENERIC,d7
  264.     bne.s .erreur_de_clipboard
  265.  
  266.     move.l #'SCRA',(a1)+
  267.     move.w #'P.',(a1)+
  268.     move.l d0,(a1)
  269.  
  270.     lea GWVA_CLIPB_PATHNAME,a0
  271.     move.w d1,d0
  272.     bsr GWVA_FILE_LOAD_IN_MEM
  273.     move.l d0,d7
  274.     ble.s .erreur_de_lecture_fichier_scrap
  275.  
  276.     move.w #GWVA_NO_ERROR_GENERIC,d7
  277. .erreur_de_lecture_fichier_scrap:
  278. .erreur_de_clipboard:
  279.     rts
  280.